package cn.seqdata.cxf.repos;

import java.util.List;
import java.util.stream.Collectors;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

import org.springframework.data.domain.Page;

import cn.seqdata.jpa.JpaAuditableObject;
import cn.seqdata.jpa.lookup.LookupJpaObject;

/** 针对JpaObject的cxf接口，支持all操作 */
public interface JaxrsAllObjRepository<T extends JpaAuditableObject> extends JaxrsObjectRepository<T> {
	@GET
	@Path("/all")
	default List<T> findAll() {
		return getRepository().findAll();
	}

	@GET
	@Path("/paging")
	default Page<T> findPaging() {
		return getRepository().findAll(getPageable());
	}

	@DELETE
	@Path("/all")
	default void deleteAll() {
		getRepository().deleteAll();
	}

	@GET
	@Path("/lookup")
	default List<LookupJpaObject> lookup() {
		return getRepository().findAll()
			.stream()
			.map(LookupJpaObject::new)
			.collect(Collectors.toList());
	}
}
